Array.prototype.map = function (callback, context) {
    // 不能是null调用方法
    if (this === null) {
        throw new TypeError(
            "Array.prototype.map" + "called on null or undefined"
        );
    }
    // 第一个参数必须要为function
    if (typeof callback != 'function') {
        throw new TypeError(
            callback + 'is not a function'
        )
    }
    // 利用slice方法浅拷贝一下
    let arr = Array.prototype.slice.call(this)
    let len = arr.length
    let arrMap = []
    for (let i = 0; i < len; i++) {
        arrMap[i] =  callback.call(context, arr[i], i, arr)
    }
    return arrMap
}
